package util;


import java.io.Serializable;
import java.util.HashMap;

/**
 * @author NAME-L
 * @Description 统一封装返回数据类型
 * @className JsonResult
 * @date 2021-11-01 17:39:19
 */
public class JsonResult extends HashMap<String, Object> implements Serializable {
    private static final long serialVersionUID = 1L;

    public static final String DATA = "data";

    private static final String ERRORCODE = "errorCode";

    private static final String ERRORMSG = "errorMsg";


    public JsonResult() {
    }

    public JsonResult(String errorCode, String msg) {
        super.put(ERRORCODE, errorCode);
        super.put(ERRORMSG, msg);
    }

    public JsonResult(String errorCode, String errorMsg, Object data) {
        super.put(ERRORCODE, errorCode);
        super.put(ERRORMSG, errorMsg);
        if (EmptyUtil.isNotEmpty(data)) {
            super.put(DATA, data);
        }
    }

    /**
     * 返回自定义操作消息
     * @param errorCode 返回编码
     * @param msg  返回内容
     * @return 成功消息
     */
    public static JsonResult withoutData(String errorCode, String msg) {
        return new JsonResult(errorCode, msg);
    }

    /**
     * 返回操作消息
     *
     * @param errorCode 返回状态码
     * @param msg       返回内容
     * @param data      数据对象
     * @return 成功消息
     */
    public static JsonResult returnMethod(String errorCode, String msg, Object data) {
        return new JsonResult(errorCode, msg, data);
    }

    /**
     * 返回查询成功消息
     * @param data      数据对象
     * @return 成功消息
     */
    public static JsonResult loginSuccessFul(Object data) {
        return new JsonResult(ReturnStatus.SUCCESS, "登录成功" , data);
    }

    /**
     * 返回查询成功消息
     * @return 成功消息
     */
    public static JsonResult loginSuccessFul() {
        return new JsonResult(ReturnStatus.SUCCESS, "登录成功");
    }

    /**
     * 返回查询成功消息
     * @param data      数据对象
     * @return 成功消息
     */
    public static JsonResult querySuccessFul(Object data) {
        return new JsonResult(ReturnStatus.SUCCESS, "查询成功" , data);
    }

    /**
     * 返回添加成功消息
     * @return 成功消息
     */
    public static JsonResult insertSuccessFul() {
        return new JsonResult(ReturnStatus.CREATED, "添加成功" );
    }

    /**
     * 返回删除成功消息
     * @return 成功消息
     */
    public static JsonResult delSuccessFul() {
        return new JsonResult(ReturnStatus.CREATED, "删除成功" );
    }

    /**
     * 返回更新成功消息
     * @return 成功消息
     */
    public static JsonResult updateSuccessFul() {
        return new JsonResult(ReturnStatus.CREATED, "更新成功" );
    }

    /**
     * 返回操作成功消息
     * @return 成功消息
     */
    public static JsonResult doSuccessful() {
        return new JsonResult(ReturnStatus.SUCCESS, "操作成功" );
    }

    /**
     * 返回操作成功消息
     * @return 成功消息
     */
    public static JsonResult doSuccessful(Object data) {
        return new JsonResult(ReturnStatus.SUCCESS, "操作成功", data);
    }

    /**
     * 返回操作成功消息
     * @return 成功消息
     */
    public static JsonResult doSuccessful(String msg ) {
        return new JsonResult(ReturnStatus.SUCCESS, msg );
    }


    /**
     * 返回操作成功消息
     * @return 成功消息
     */
    public static JsonResult doSuccessful(String msg , Object data) {
        return new JsonResult(ReturnStatus.SUCCESS, msg , data );
    }

    /**
     * 返回操作失败消息
     * @return 成功消息
     */
    public static JsonResult doFailed() {
        return new JsonResult(ReturnStatus.DO_FAILED, "操作失败，请联系管理员！" );
    }

    /**
     * 返回操作失败消息
     * @return 成功消息
     */
    public static JsonResult doFailed(String msg) {
        return new JsonResult(ReturnStatus.DO_FAILED, msg );
    }

    /**
     * 返回删除失败消息
     * @return 成功消息
     */
    public static JsonResult delFailed() {
        return new JsonResult(ReturnStatus.DO_FAILED, "删除失败" );
    }

    /**
     * 返回登录失败消息
     * @return 失败消息
     */
    public static JsonResult loginFail() {
        return new JsonResult(ReturnStatus.NO_LOGIN, "登录失败" );
    }

    /**
     * 返回登录失败消息
     * @return 失败消息
     */
    public static JsonResult loginForbid() {
        return new JsonResult(ReturnStatus.NO_LOGIN, "账号已封禁，无法登录，请联系管理员处理！" );
    }

    /**
     * 返回系统异常消息
     * @return 返回异常消息
     */
    public static JsonResult systemError() {
        return new JsonResult(ReturnStatus.ERROR, "系统异常");
    }


    /**
     * 返回自定义系统异常消息
     * @return 返回自定义系统异常消息
     */
    public static JsonResult systemError(String msg) {
        return new JsonResult(ReturnStatus.ERROR, msg);
    }


    /**
     * 返回系统异常消息
     * @return 返回异常消息
     */
    public static JsonResult paramsError() {
        return new JsonResult(ReturnStatus.ERROR, "参数异常");
    }
}
